package com.yssoft.controller.app.inventory;

import com.yssoft.entity.core.TCode;
import com.yssoft.entity.inventory.TWarehouse;
import com.yssoft.service.inventory.WarehouseService;
import com.yssoft.utils.AppUtil;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @类名称: WarehouseController
 * @类描述: 仓库控制器
 * @作者: 王永宁
 * @创建时间:2018年5月12日 下午1:36:50
 */
@CrossOrigin//解决跨域session问题
@Controller
@RequestMapping("/app/warehouse")
public class WarehouseController {

    @Resource
    private WarehouseService warehouseService;

    /**
     * @param companyId 企业id
     * @param name      仓库名
     * @param tcId      仓库类型
     * @return Object
     * @方法名称: getWarehouseList
     * @功能描述: 获取仓库列表
     * @作者: 王永宁
     * @创建时间:2018年5月9日 下午5:33:38
     */
    @RequestMapping(value = "getWarehouseList", method = RequestMethod.POST)
    @ResponseBody
    public Object getWarehouseList(int page, int limit, Integer companyId, String name, String tcId) {
        if (null == companyId) {
            return AppUtil.returnMapJson("0", "查询失败，请传递企业id", null);
        }
        try {
            List<Map<String, Object>> warehouseList = warehouseService.findAll(page, limit, companyId, name, tcId);
            return AppUtil.returnListJson("1", "查询成功!", warehouseList);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }


    /**
     * @param companyId 企业id
     * @param id        人员id
     * @return Object
     * @方法名称: getPersonListByEId
     * @功能描述: 根据企业id查询人员列表
     * @作者: 王永宁
     * @创建时间:2018年5月17日 上午9:33:38
     */
    @RequestMapping(value = "getPersonListByEId", method = RequestMethod.POST)
    @ResponseBody
    public Object getPersonListByEId(Integer companyId, String id) {
        if (null == companyId) {
            return AppUtil.returnMapJson("0", "查询失败，请传递企业id", null);
        }
        try {
            List<Map<String, Object>> person = warehouseService.getPersonListByEId(companyId, id);
            return AppUtil.returnListJson("1", "查询成功!", person);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }

    /**
     * @param id 仓库id
     * @return Object
     * @方法名称: getOne
     * @功能描述: 根据仓库id查询仓库
     * @作者: 王永宁
     * @创建时间:2018年5月17日 上午10:33:38
     */
    @RequestMapping(value = "getOne", method = RequestMethod.GET)
    @ResponseBody
    public Object getOne(String id) {
        try {
            Map<String, Object> warehouse = warehouseService.getOne(id);
            return AppUtil.returnMapJson("1", "查询成功!", warehouse);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }

    /**
     * @param warehouse 仓库实体
     * @param id        人员id
     * @return Object
     * @方法名称: saveWarehouse
     * @功能描述: 保存仓库
     * @作者: 王永宁
     * @创建时间:2018年5月17日 上午11:04:38
     */
    @RequestMapping(value = "saveWarehouse", method = RequestMethod.POST)
    @ResponseBody
    public Object saveWarehouse(TWarehouse warehouse, String ids) {
        try {
            warehouseService.saveWarehouse(warehouse, ids);
            return AppUtil.returnMapJson("1", "保存成功!", null);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "保存失败!" + e.getMessage(), null);
        }
    }

    /**
     * @param id 仓库id
     * @param id startupStat
     * @return Object
     * @方法名称: startup
     * @功能描述: 更改启用停用状态
     * @作者: 王永宁
     * @创建时间:2018年5月17日 上午10:33:38
     */
    @RequestMapping(value = "startup", method = RequestMethod.POST)
    @ResponseBody
    public Object startup(String id, Integer startupStat) {
        try {
            warehouseService.startup(id, startupStat);
            return AppUtil.returnMapJson("1", "修改成功!", null);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "修改失败!" + e.getMessage(), null);
        }
    }


    /**
     * @param companyId 企业id
     * @param name      仓库名
     * @param tcId      仓库类型
     * @return Object
     * @方法名称: getWarehouseListck
     * @功能描述: 获取仓库列表
     * @作者: 王永宁
     * @创建时间:2018年5月9日 下午5:33:38
     */
    @RequestMapping(value = "getWarehouseListck", method = RequestMethod.POST)
    @ResponseBody
    public Object getWarehouseListck(int page, int limit, Integer companyId, String name, String tcId) {
        if (null == companyId) {
            return AppUtil.returnMapJson("0", "查询失败，请传递企业id", null);
        }
        try {
            List<Map<String, Object>> warehouseList = warehouseService.findAllck(page, limit, companyId, name, tcId);
            return AppUtil.returnListJson("1", "查询成功!", warehouseList);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }

    /**
     * 库存详情
     * @param warehouseId
     * @return
     */

    @RequestMapping(value = "getWarehouseDetail", method = RequestMethod.POST)
    @ResponseBody
    public Object getWarehouseDetail(Integer warehouseId) {
        try {
            Map<String, Object> map = warehouseService.queryWarehouseDetail(warehouseId);
            return AppUtil.returnMapJson("1", "查询成功!", map);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }

    /**
     * @param param 仓库类型参数
     * @return Object
     * @方法名称: getWarehouseType
     * @功能描述: 获取仓库类型
     * @作者: 于兴达
     * @创建时间:2018年9月06日 下午2:30:38
     */
    @RequestMapping(value = "getWarehouseType", method = RequestMethod.POST)
    @ResponseBody
    public Object getWarehouseType() {
        try {
            List<TCode> codeList = warehouseService.findWarehouseType();
            List<Map<String, Object>> warehouseList = new ArrayList<Map<String, Object>>();
            for (TCode map : codeList) {
                Map<String, Object> code = new HashMap<String, Object>();
                code.put("id", map.getId());
                code.put("name", map.getDescribed());
                code.put("classify", map.getClassify());
                warehouseList.add(code);
            }
            return AppUtil.returnListJson("1", "查询成功!", warehouseList);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }

    /**
     * 获取不合格品仓库
     *
     * @param page
     * @param limit
     * @param companyId
     * @return
     * @作者: 王永宁
     * @创建时间:2018年9月8日09:00:00
     */
    @RequestMapping(value = "getNoWarehouseList", method = RequestMethod.POST)
    @ResponseBody
    public Object getNoWarehouseList(Integer companyId) {
        if (null == companyId) {
            return AppUtil.returnMapJson("0", "查询失败，请传递企业id", null);
        }
        try {
            List<Map<String, Object>> warehouseList = warehouseService.findNoAll(companyId);
            return AppUtil.returnListJson("1", "查询成功!", warehouseList);
        } catch (NumberFormatException e) {
            return AppUtil.returnMapJson("0", "查询失败!" + e.getMessage(), null);
        }
    }
}
